Pour les articles homonymes, voir Mono (logiciel) (homonymie).
{{Infobox Logiciel | nom = Mono | logo =
| image = | description = | développeur =
Novell | dernière version = 1.2.5.1 | date de dernière version =
20 septembre version avancée = Mono est une mise en oeuvre
libre (sous licence GPL, LGPL ou
X11 selon les éléments) de la plate-forme de développement
Microsoft .NET.
Mono a été initié par Miguel de Icaza et est actuellement soutenu par Novell.
Présentation
Mono est une plate-forme de développement complète basée sur une mise en oeuvre de la machine virtuelle
.NET et des API de base définis à l'
ECMA (également normes ISO). Mono supporte pour l'instant la version 1.1 du framework .NET de Microsoft.
Mono propose entre autres :
- Un compilateur C, une machine virtuelle, de nombreuses classes de base; tous ces composants reposent sur les standards Ecma-334 et Ecma-335. Mono propose également un compilateur Javascript et VB.NET;
- des API indépendantes de l’environnement : sécurité, base de données, web services, XML, web forms ;
- des API destinées à la programmation sous GNU/Linux et plus particulièrement GNOME : Gtk, Glade# Gecko#, Gst# ;
- des API compatibles avec le Framework .Net de Microsoft ; il s'agit du portage de briques logicielles non couvertes par une standardisation ECMA, comme ASP.NET, ADO.NET...
- un IDE (environnement de développement intégré) : MonoDevelop, avec notamment le support de la complétion de code ;
- un outil pour naviguer dans la documentation : Monodoc, qui a l'originalité de pouvoir être modifié par le programmeur qui peut ensuite envoyer automatiquement les modifications au CVS de Mono ;
- un serveur web léger entièrement compatible avec la technologie ASP.NET qui permet d'utiliser n'importe quel langage de la plate-forme pour générer des sites web dynamiques. Un module Apache est également disponible.
Comparaison avec la plate-forme Java
Souvent comparé à la plate-forme
Java, cette plateforme en partage de nombreux aspects techniques comme l’utilisation d'un langage intermédiaire (IL pour Intermediate Langage, équivalent du bytecode Java), le support d’application Web, la portabilité (toute relative cependant pour les deux plateformes) et un ensemble impressionnant d’API fournis en standards.
Mono se démarque cependant de la solution de Sun :
- la plate-forme décrit également un système facilitant l’interopérabilité entre les langages : le programmeur développe dans le langage de son choix mais sa bibliothèque pourra être utilisée par tous les langages de la plate-forme, de manière transparente, sans créer de bindings souvent lourds et coûteux à utiliser et maintenir ;
- des fonctionnalités supplémentaires comme les métadonnées, la détection de débordement ou encore le versionning et la simplicité d’utilisation d’API écrits en C ;
- une philosophie différente : Java vise avant tout la portabilité du bytecode et des API standards, Mono vise plutôt l’intégration dans l'environnement d'exécution, parfois au détriment de la portabilité.
Note : la plate-forme est conçue pour des langages compilés et orientés objet. La mise en oeuvre de Python IronPython a cependant démontré qu’il était tout à fait possible d’obtenir des performances similaires avec un langage historiquement interprété. Il faut également noter que la plate-forme est facilement interfaçable avec d’autres langages compilés de manière traditionnelle comme le langage C.
Mono et les brevets Microsoft
Le portage vers
Mono de composants
.NET non soumis à l'
ECMA pour standardisation exposa le projet à des poursuites pour violations de brevets logiciels, et ce depuis le début. Ce risque n'est pas lié aux technologies soumises à l'
ECMA, comme
C, ni aux bibliothèques ou autres couches logicielles du projet GNU. Ces brevets concernent des technologies développées par Microsoft et constituant en partie le
Framework .NET, comme
ASP.NET,
ADO.NET ou la couche communication du framework
.NET 3.0 (
Windows Communication Foundation)... Ces technologies ne sont pas totalement mises en oeuvre à ce jour, mais ne sont pas vitales au développement d'applications Mono.
Accord entre Novell et Microsoft
Microsoft et
Novell ont annoncé le
2 novembre 2006 la signature d'un accord dans lequel
Microsoft s'engage à ne poursuivre ni
Novell, ni leurs clients, pour violation de brevets logiciels. Le projet Mono est concerné par cet accord.
Controverse au sujet de la GPL
Bien que soutenu par
Novell, le projet Mono concerne d'autres acteurs du logiciel libre. Pour certains, l'accord entre
Microsoft et
Novell représente un risque pour le logiciel libre ainsi qu'une remise en cause de sa
définition (en).
Liens internes
- MonoDevelop : Un environnement de développement pour Mono sous Linux et MacOS X
Liens externes